<?php

require("Base.php");

class class_PedidosExt extends class_Base
{
  function __construct() {
    parent::__construct();
  }


  public function method_recibir_pedido($params, $error) {
  	$p = $params[0];
  	
	$sql = "UPDATE pedido_ext SET recibido = TRUE, fecha_recibido= NOW() WHERE id_pedido_ext='" . $p->id_pedido_ext . "'";
	mysql_query($sql);
  	
	foreach ($p->detalle as $item) {
		$sql = "INSERT pedido_ext_recibido SET id_pedido_ext = '" . $item->id_pedido_ext . "', id_producto_item = '" . $item->id_producto_item . "', cantidad = '" . $item->total . "'";
		mysql_query($sql);
	}
  }


  public function method_alta_pedido_ext($params, $error) {
  	$p = $params[0];

  	$set = $this->prepararCampos($p->model);
  	
	$sql = "INSERT pedido_ext SET " . $set . ", id_fabrica='" . $p->id_fabrica . "', fecha = NOW(), recibido = FALSE";
	mysql_query($sql);
	$insert_id = mysql_insert_id();
	
	foreach ($p->detalle as $item) {
		if ($item->cantidad > 0) {
			$sql = "INSERT pedido_ext_detalle SET id_pedido_ext = '" . $insert_id . "', id_producto_item = '" . $item->id_producto_item . "', cantidad = '" . $item->cantidad . "'";
			mysql_query($sql);
			
			foreach ($item->detalle as $item2) {
				$sql = "UPDATE pedido_suc_detalle SET id_pedido_ext='" . $insert_id . "' WHERE id_pedido_suc_detalle='" . $item2->id_pedido_suc_detalle . "'";
				mysql_query($sql);
			}
		}
	}
	
	$resultado = $this->method_leer_pedido($params, $error);
	
	return $resultado;
  }

  public function method_leer_pedido($params, $error) {
	$resultado = "";
	$resultado->internos = $this->method_leer_internos($params, $error);
	$resultado->externos = $this->method_leer_externos($params, $error);
	
	return $resultado;
  }
  
  public function method_leer_internos($params, $error) {
  	$p = $params[0];
  	
	require('conexion.php');
	$link1 = mysql_connect("$servidor", "$usuario", "$password");
	mysql_select_db("$base", $link1);
	mysql_query("SET NAMES 'utf8'");

	$resultado = array();
	
	$sql="SELECT" .
			" fabrica.id_fabrica" .
			", fabrica.descrip AS fabrica" .
			", producto.descrip AS producto" .
			", producto.iva" .
			", producto_item.id_producto_item" .
			", producto_item.precio_lista" .
			", producto_item.capacidad" .
			", producto_item.busqueda" .
			", unidad.id_unidad" .
			", unidad.descrip AS unidad" .
			", color.descrip AS color" .
			", SUM(pedido_suc_detalle.cantidad) AS acumulado" .
		" FROM ((((producto_item LEFT JOIN pedido_suc_detalle USING(id_producto_item)) INNER JOIN producto USING(id_producto)) INNER JOIN fabrica USING(id_fabrica)) INNER JOIN unidad USING(id_unidad)) INNER JOIN color USING(id_color)";

	if ($p->id_fabrica == "1") {
		$sql.=" WHERE pedido_suc_detalle.cantidad > 0";
	} else {
		$sql.=" WHERE producto.id_fabrica='" . $p->id_fabrica . "'";
	}

	$sql.=" GROUP BY producto_item.id_producto_item" .
		" ORDER BY fabrica, producto, color, unidad, capacidad"
	;
	
	
	
	$rsPedidoSuc = mysql_query($sql, $link1);
	if (mysql_num_rows($rsPedidoSuc)) {
		$id_producto_item = array();
		$stock = array();
		
		$sql="SELECT * FROM paramet";
		$rsParamet = mysql_query($sql, $link1);
		$rowParamet = mysql_fetch_object($rsParamet);
		
		$sql="SELECT * FROM sucursal";
		$rsSucursal = mysql_query($sql, $link1);
		
		
		while ($rowPedidoSuc = mysql_fetch_object($rsPedidoSuc)) {
			$id_producto_item[] = "'" . $rowPedidoSuc->id_producto_item . "'";
		}
		$producto_item = implode(", ", $id_producto_item);
		
		while ($rowSucursal = mysql_fetch_object($rsSucursal)) {
			$link2 = mysql_connect($rowSucursal->url, $rowSucursal->username, $rowSucursal->password);
			mysql_select_db("$base", $link2);
			mysql_query("SET NAMES 'utf8'", $link2);
			
			$sql="SELECT id_producto_item, stock FROM producto_item WHERE id_producto_item IN (" . $producto_item . ")";
			$stock[$rowSucursal->id_sucursal] = mysql_query($sql, $link2);
			mysql_close($link2);
		}
		
		mysql_data_seek($rsPedidoSuc, 0);
		while ($rowPedidoSuc = mysql_fetch_object($rsPedidoSuc)) {
			$rowPedidoSuc->seleccionado = (bool) $rowPedidoSuc->seleccionado;
			$rowPedidoSuc->capacidad = (float) $rowPedidoSuc->capacidad;
			$rowPedidoSuc->acumulado = (float) $rowPedidoSuc->acumulado;
			$rowPedidoSuc->precio_lista = (float) $rowPedidoSuc->precio_lista;
			$rowPedidoSuc->plmasiva = $rowPedidoSuc->precio_lista + ($rowPedidoSuc->precio_lista * (float) $rowPedidoSuc->iva / 100);
			$rowPedidoSuc->stock = 0;
			$rowPedidoSuc->stock_suc = 0;
			$rowPedidoSuc->vendido = 0;
			$rowPedidoSuc->cantidad = 0;
			$rowPedidoSuc->detalle = array();
			
			$sql="SELECT id_pedido_suc_detalle FROM pedido_suc_detalle WHERE id_producto_item = '" . $rowPedidoSuc->id_producto_item . "'";
			$rsPedido_suc_detalle = mysql_query($sql, $link1);
			while ($rowPedido_suc_detalle = mysql_fetch_object($rsPedido_suc_detalle)) {
				$aux = new stdClass;
				$aux->id_pedido_suc_detalle = $rowPedido_suc_detalle->id_pedido_suc_detalle;
				$rowPedidoSuc->detalle[] = $aux;
			}
			
			foreach($stock as $key => $value) {
				if (mysql_num_rows($value)) mysql_data_seek($value, 0);
				while ($rowStock = mysql_fetch_object($value)) {
					if($rowStock->id_producto_item == $rowPedidoSuc->id_producto_item) {
						if ($key == $rowParamet->id_sucursal) {
							$rowPedidoSuc->stock = (float) $rowStock->stock;
						} else {
							$rowPedidoSuc->stock_suc = $rowPedidoSuc->stock_suc + (float) $rowStock->stock;
						}
						break;
					}
				}
			}
			
			$resultado[] = $rowPedidoSuc;
		}
		
	}
	return $resultado;
  }
  
  public function method_leer_externos($params, $error) {
	require('conexion.php');
		
	$link1 = mysql_connect("$servidor", "$usuario", "$password");
	mysql_select_db("$base", $link1);
	mysql_query("SET NAMES 'utf8'");
  	
	$resultado = array();
	
	$sql="SELECT pedido_ext.*, fabrica.descrip AS fabrica, transporte.descrip AS transporte FROM (pedido_ext INNER JOIN fabrica USING(id_fabrica)) INNER JOIN transporte USING(id_transporte) ORDER BY fecha";
	$rsPedido = mysql_query($sql);
	while ($regPedido = mysql_fetch_object($rsPedido)) {
		$regPedido->recibido = (bool) $regPedido->recibido;
		$regPedido->detalle = array();
		$sql="SELECT pedido_ext_detalle.id_pedido_ext_detalle, pedido_ext_detalle.id_pedido_ext, pedido_ext_detalle.cantidad, producto_item.id_producto_item, producto_item.cod_interno, producto_item.id_unidad, producto_item.precio_lista, producto.descrip AS producto, producto.iva, producto_item.capacidad, color.descrip AS color, unidad.descrip AS unidad";
		$sql.=" FROM ((((pedido_ext_detalle INNER JOIN producto_item USING (id_producto_item)) INNER JOIN producto USING(id_producto)) INNER JOIN color USING (id_color)) INNER JOIN unidad USING (id_unidad))";
		$sql.=" WHERE pedido_ext_detalle.id_pedido_ext='" . $regPedido->id_pedido_ext . "'";
		$rs = mysql_query($sql);
		while ($row = mysql_fetch_object($rs)) {
			$row->capacidad = (float) $row->capacidad;
			$row->precio_lista = (float) $row->precio_lista;
			$row->plmasiva = $row->precio_lista + ($row->precio_lista * (float) $row->iva / 100);
			$row->cantidad = (float) $row->cantidad;
			$row->ingresar = 0;
			$row->total = 0;
			$regPedido->detalle[] = $row;
		}
		
		
		$regPedido->recibidos = array();
		$sql="SELECT pedido_ext_recibido.cantidad, producto_item.id_producto_item, producto_item.id_unidad, producto_item.precio_lista, producto.descrip AS producto, producto.iva, producto_item.capacidad, color.descrip AS color, unidad.descrip AS unidad";
		$sql.=" FROM ((((pedido_ext_recibido INNER JOIN producto_item USING (id_producto_item)) INNER JOIN producto USING(id_producto)) INNER JOIN color USING (id_color)) INNER JOIN unidad USING (id_unidad))";
		$sql.=" WHERE pedido_ext_recibido.id_pedido_ext='" . $regPedido->id_pedido_ext . "'";
		$rs = mysql_query($sql);
		while ($row = mysql_fetch_object($rs)) {
			$row->capacidad = (float) $row->capacidad;
			$row->cantidad = (float) $row->cantidad;
			$regPedido->recibidos[] = $row;
		}
		
		
		$resultado[] = $regPedido;
	}
	return $resultado;
  }
}

?>